Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи №2
на тему:
„ VHDL- проект 8-бітного мікроконтролера Xilinx Picoblaze”
Підготував: ст. гр. СКС-1
Львів 2007
Мета: Ознайомитись з архітектурою мікроконтролера Xilinx Picoblaze, освоїти основні принципи його конфігурування.
Теоретичні відомості:
Сучасні програмовані логічні матриці та інтегральні схеми створюються переважно з вбудованими мікропроцесорними ядрами. Зокрема, фірми Xilinx та Altera випускають ПЛМ та ПЛІС з 32-розрядними процесорними ядрами Microblaze та NIOS відповідно. Однак, право на використання цих ядер обійдеться користувачу приблизно в 1000 доларів США.
Тому, користуючись відомими правилами маркетингової політики у сфері високих технологій, фірма Xilinx випустила безкоштовне 8-розрядне мікропроцесорне ядро Picoblaze. Даний процесор та різні його модифікації є 8-розрядним програмованим процесором, що підтримує 49 різних 16- та 18-бітних інструкцій, від 8 до 32 8-бітних регістрів загального призначення, 256 портів з прямою та непрямою адресацією, функцією скиду та маскованим перериванням.
Огляд структури мікроконтролера
Структура мікроконтролера Picoblaze має наступний вигляд:
Рисунок 1 Структура мікроконтролера Picoblaze
Інструкції мікропроцесора містяться у блоку пам’яті розміром 256х16, яка ініціалізується вбудованим програмним забезпеченням. Коли виконуються асемблерні команди, результат їх виконання надходить до VHDL-пакувальника, який містить інструкції ініціалізації Xilinx, які приховують усі порти, за виключенням портів ADDRESS, CLK, INSTRUCTION OUT.
Ввід\вивід у Picoblaze здійснюється через вхідні та вихідні порти. Для вибору різних портів використовується мультиплексор та демультиплексор. Сигнали Wr та Rd використовуються для стробування процесів запису та читання (використання сигналу Rd є необов’язковим). Вхід переривання є чутливим до рівня, але перед використанням він має бути активований внутрішнім ПЗ.
Демонстраційна програма
Демонстраційна програма для Picoblaze створює простий двійковий лічильник. Його значення буде збільшуватися на 1 при кожному натисканні перемикача Test Switch, використовуючи підпрограму обробки переривання, тоді як основна програма буде виконувати вивід результату на індикатор кожен раз, коли значення лічильника змінюється.
З метою покращення організації проекту він розділений на 3 директорії.
VHDL – містить файл Pocoblaze - kcpsm.vhd та vhdl-пакувальник, що під’єднує його до пам’яті інструкцій.
SW - директорія, в якій асемблерний файл (picocode.psm) з допомогою пакувальника перетворюється у vhdl-файл - (picocode.vhd).
XILINX – директорія, в якій містяться результати синтезу на Xilinx WebPack та файл програмування ПЛІС.
Порядок виконання роботи:
1. Підготовка проекту
Скопіюйте файл kcpsm.vhd (ядро Picoblaze) у директорію VHDL, та kcpsm.exe (файл асемблера), ROM_foem.coe та ROM_form.vhd - у директорію SW.
При розгляді коду, який міститься у файлі picocode.psm, бачимо, що код починається з оголошення двох номерів портів та іменування двох регістрів у count та old_count . Також задані початкові значення для регістрів та дозволені переривання.
В головному циклі виконується перевірка чи відбулося інкрементування лічильника шляхом постійного віднімання значень count та old_count та повернення на початок, якщо результат віднімання вийшов нульовий. Якщо результат порівняння ненульовий – виконується вивід нового значення на індикатор, нове значення count лічильника зберігається у змінній old_count, після чого знову відбувається повернення на початок. Адреса початку підпрограми обробки переривання встановлюється командою Address B0 (однак, це є необов’язковим, оскільки якщо адресу не буде встановлено, підпрограма обробки буде розміщена одразу після коду основної програми). Перше, що робить підпрограма обробки – це інкрементування лічильника. Це супроводжується програмною затримкою з метою уникнення генер...